//导入数据库操作模块
const db = require('../db/index')

//导入加密解密的包
const bcrypt = require('bcryptjs')


//根据用户id，查询用户基本信息
exports.getUserInfo = (req,res)=>{
    console.log('req',req);
    const sqlStr = 'SELECT id,username,nickname,email,user_pic FROM ev_users where id=?'
    // 注意：req对象上的user,是token解析成功时，express-jwt中间件自动帮我们挂载上去的
    db.query(sqlStr,req.user.id,(err,results)=>{
        if(err) return res.cc(err)
        if(results.length !== 1) return res.cc('获取用户信息失败')
        res.send({
            status:0,
            message:'获取用户信息成功',
            data:results[0]
        })
    })
}

//更新用户的基本信息
exports.updateUserInfo = (req,res)=>{
    const sqlStr =  "UPDATE ev_users set ? WHERE id=?"
    db.query( sqlStr , [ req.body , req.body.id ] , (err,results)=>{
        console.log('results',results);
        if(err) return res.cc(err)
        if(results.affectedRows !== 1) return res.cc('数据异常，修改用户基本信息失败')
        return res.cc('修改用户基本信息成功', 0)
    })
}

//重置密码
exports.updatePassword = (req,res)=>{
    //1.根据id查询当前账号是否存在
    const sqlStr = "SELECT * FROM ev_users WHERE id=?"
    db.query(sqlStr , req.user.id , (err,results)=>{
        if(err) return res.cc(err)
        if(results.length !== 1 ) return res.cc('用户不存在')
        //2.判断提交的旧密码是否正确,用 bcrypt.compareSync( 提交的密码 ， 数据库里面的密码 ) 方法，验证密码是否正确
        const compareResult = bcrypt.compareSync(req.body.oldPwd , results[0].password)
        if(!compareResult) return res.cc('原密码错误！')
        // res.cc('ddd')
        //加密新密码，并更新到数据库 bcrypt.hashSync()
        const newPwd = bcrypt.hashSync(req.body.newPwd , 10)
        const sqlStr2 = "UPDATE ev_users SET password=? WHERE id=?"
        db.query(sqlStr2,[newPwd , req.user.id],(err,results2)=>{
            if(err) return res.cc(err)
            if(results2.affectedRows !== 1) return res.cc('更新密码失败')
            res.cc('更新密码成功',0)
        })
    })
}

//更新用户头像
exports.updateAvatar = (req,res)=>{
    res.send('ok')
}